#-*- coding: utf-8 -*- 

'''
authors: Fábio Martins nº6041 and Miguel Travassos nº6312
'''

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from xlrd import open_workbook
from classBD import*

import sys 

class WriteFilesInDataBase(object):
	"""Classe que vai criar a base de dados e inserir os dados na mesma"""
	def __init__(self):
		super(WriteFilesInDataBase, self).__init__()
		
		Base = declarative_base()

		self.engine = create_engine('sqlite:///LP.db')
		
		#Cria a base de dados
	def dataBaseCreate(self):
		"""Cria a base de dados"""
		
		Base.metadata.drop_all(self.engine)

		Base.metadata.create_all(self.engine)
		pass

		# Le os dados do ficheiro xls e cria varios objectos da classe colocacoesEnsinoSuperiorBD, colocados todos num array
	def readDataFromFile(self):
		"""Funçao que recolhe os dados do ficheiro xls"""
		dataInformation = []
		try:
			colocacoesExcel1314 = open_workbook('cna131fresultados.xls')
			sheet = colocacoesExcel1314.sheet_by_name("Resultados")
			pass
		except Exception, e:
			print e,"Put file 'cna131fresultados.xls' in the directory of the source code"
			sys.exit(0)
			raise
		
		for x in xrange(3,sheet.nrows-2):
			dataInformation.append(colocacoesEnsinoSuperiorBD(sheet.row_values(x)[0],sheet.row_values(x)[1],sheet.row_values(x)[2],sheet.row_values(x)[3],sheet.row_values(x)[4],sheet.row_values(x)[5],sheet.row_values(x)[6],sheet.row_values(x)[7],sheet.row_values(x)[8]))

		return dataInformation

		# insere os dados na base de dados
	def insertDataInDataBase(self):
		""" funçao que insere os dados na base de dados"""
		
		
		#inicia uma sessao
		Session = sessionmaker(bind=self.engine)
		session = Session()

		#insere os dados na base de dados 
		session.add_all(self.readDataFromFile())

		session.commit()
		pass
